#ifdef KITSCHY_DEBUG_MEMORY 
#include "debug_memorymanager.h"
#endif

#ifdef WIN32
#include "windows.h"
#endif

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "math.h"

#include <GL/gl.h>
#include <GL/glut.h>

#include "BList.h"
#include "BVector.h"
#include "geometrics.h"
#include "quaternion.h"
#include "symbol.h"
#include "sort.h"
#include "ontology.h"
#include "featureterm.h"
#include "FTKBase.h"

#include "myglutaux.h"

#include "AWEntity.h"
#include "AWMessage.h"
#include "AWScenario.h"
#include "AWSelectScenario.h"
#include "AWSelectPlaneScenario.h"

#include "loader.h"

AW_SelectPlaneScenario::AW_SelectPlaneScenario() : AW_SelectScenario() 
{
	class_name->set("AW_SelectPlaneScenario");

} /* AW_SelectPlaneScenario::AW_SelectPlaneScenario */ 


AW_SelectPlaneScenario::AW_SelectPlaneScenario(FILE *fp) : AW_SelectScenario() 
{
	class_name->set("AW_SelectPlaneScenario");

	load(fp);
} /* AW_SelectPlaneScenario::AW_SelectPlaneScenario */ 


AW_SelectPlaneScenario::~AW_SelectPlaneScenario()
{
} /* AW_SelectPlaneScenario::~AW_SelectPlaneScenario */ 


bool AW_SelectPlaneScenario::load(FILE *fp) 
{
	if (!AW_SelectScenario::load(fp)) return false;
	if (2!=fscanf(fp,"%f %f",&sizex,&sizez)) return false;
	if (3!=fscanf(fp,"%f %f %f",&r,&g,&b)) return false;

	return true;
} /* AW_SelectPlaneScenario::load */ 


bool AW_SelectPlaneScenario::save(FILE *fp) 
{
	if (!AW_SelectScenario::save(fp)) return false;
	fprintf(fp,"%f %f\n",sizex,sizez);
	fprintf(fp,"%f %f %f\n",r,g,b);

	return true;
} /* AW_SelectPlaneScenario::save */ 


bool AW_SelectPlaneScenario::is_a(char *c)
{
	if (strcmp(c,"AW_SelectPlaneScenario")==0) return true;

	return AW_SelectScenario::is_a(c);
} /* AW_SelectPlaneScenario::is_a */ 


bool AW_SelectPlaneScenario::is_a(Symbol *c)
{
	if (c->cmp("AW_SelectPlaneScenario")) return true;

	return AW_SelectScenario::is_a(c);
} /* AW_SelectPlaneScenario::is_a */ 


void AW_SelectPlaneScenario::draw(void)
{
	/* Escenario: */ 
	glPushName(m_firstname);
	glColor3f(r,g,b);
	glPushMatrix();
	glTranslatef(0,0.2F,0);
	glutSolidBox(sizex,0.2F,sizez);
	glPopMatrix();
	glPopName();
} /* AW_SelectPlaneScenario::draw */ 



int AW_SelectPlaneScenario::selection_get_num(void)
{
	return 1;
} /* AW_SelectPlaneScenario::selection_get_num */ 


bool AW_SelectPlaneScenario::set_selected(int name,float *cx,float *cy,float *cz,
												   float *cxp,float *cyp,float *czp)
{
	if (name==m_firstname) {
		/* Set the proper camera position: */ 

		/* base: */ 
		*cx=sizex;
		*cy=-1.0F*(sizex+sizez);
		*cz=-2.5F*sizez;

		/* center: */ 
		*cxp=0.0;
		*cyp=0.0;
		*czp=0.0;
		return true;
	} /* if */ 

	return false;
} /* AW_SelectPlaneScenario::set_selected */ 

